﻿using System.Collections.Generic;
using CTS.Data.Domain.Dao;

namespace CTS.Data.MAParameters.Domain.Dao
{
    /// <summary>
    /// ParameterComDao
    /// </summary>
    public class ParameterComDao : GenericDao<EntitiesDataContext>
    {
        // Định nghĩa hằng file sql
        public const string PARAMETERCOMDAO_GETTYPE_SQL = "ParameterComDao_GetType.sql";
        public const string PARAMETERCOMDAO_GETVALUE_SQL = "ParameterComDao_GetValue.sql";

        /// <summary>
        /// Kiểm tra tồn tại parameter
        /// </summary>
        public bool IsExist(string localeCd, string paramCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { localeCd, paramCd };
            // Kết quả trả về
            return IsExist<MAParameter>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy thông tin parameter
        /// </summary>
        public MAParameter GetInfo(string localeCd, string paramCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { localeCd, paramCd };
            // Kết quả trả về
            return GetSingle<MAParameter>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy danh sách parameter
        /// </summary>
        public IList<MAParameter> GetList(bool ignoreDeleteFlag)
        {
            // Kết quả trả về
            return GetList<MAParameter>(ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy loại parameter
        /// </summary>
        public string GetType(string localeCd, string paramCd, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                LocaleCd = localeCd,
                ParamCd = paramCd,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetObjectByFile<string>(PARAMETERCOMDAO_GETTYPE_SQL, param);
        }

        /// <summary>
        /// Lấy giá trị parameter
        /// </summary>
        public string GetValue(string localeCd, string paramCd, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                LocaleCd = localeCd,
                ParamCd = paramCd,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetObjectByFile<string>(PARAMETERCOMDAO_GETVALUE_SQL, param);
        }
    }
}
